#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#define seps ",;!.?():"
#define SEP "#"
/*estrutura para lista de palavras*/
typedef struct lista{
	char* word;
	int freq;
	struct lista *nxt;
} list, *ap_list;

/*estrutura para a lista somente de palavras*/
typedef struct lista2{
	char *pal;
	struct lista *nxt;
} strlist, *strlistP;

//funcao que transforma a string em letras maiusculas
void str_upper(char *string, int tamanho);
//separa a string por palavra e retorna um apontador para todas as palavras
char** strtoken(char *str, int *n);
//arruma a string caso cada palavra tenha mais doq um espaco
void str_spaces(char *str, char *str1);
//cria uma nova lista
ap_list list_new();
//cria o no cabeca da lista
void cria_no( ap_list lista, char *pal);
//libera toda a memoria utilizada em mallocs
void free_malloc(ap_list lista);
//conta a frequencia do caractere no texto
int charfrequency(char * str , char *letra);
//conta a frequencia da string no texto
int strfrequency(char *str, char *pal);
//conta quantas vezes cada palavra aparece no texto
ap_list list_freq(char** str,int tam);
//recria uma string com somente numeros ou letras
void alfanum(char *str);
//imprime a lista
void list_print(ap_list lista);
//cria um arquivo com cada palavra e sua frequencia no texto
void file_create(ap_list lista);

char** abre_pega (char* file, char *emsgopen);
  ///////////////////////// AQUIIIIIIIIIIIIIIIIIIIIIIII
char** strtoken2(char *str, int *n);//retorna mensagem de erro ao abrir o arquivo
//sai do programa caso nao encontre o arquivo
void f_erropen(FILE *f, char *fopenerr);
//conta o numero de linhas do arquivo de erros
int f_countlines(char *fname, char *erro);
//pega as linhas do arquivo de erro e armazena numa matriz
//cada linha e armazenada em um indice do vetor
char **f_mmsgs(char *fname, int nlines);
//free na matriz de mensagens
void free_mmsgs(char **mmsgs, int nlines);
